// PasswordPolicy.h : main header file for the Application
//
#pragma once

// CPasswordPolicy:
// See PasswordPolicy.cpp for the implementation of this class
//
#include "XMLFoundation.h"
#include "GString.h"
#include "Lenght.h"
#include "UpperCase.h"
#include "LowerCase.h"
#include "Numeric.h"
#include "SpecialChar.h"
#include "PreviousPassword.h"
#include "Sequence.h"
#include "Dictionary.h"

class CPasswordPolicy : public XMLObject
{
public:
	CPasswordPolicy();
	~CPasswordPolicy();

private:
	GString m_description;
	CLenght m_lenght;
	CUpperCase m_upperCase;
	CLowerCase m_lowerCase;
	CNumeric m_numeric;
	CSpecialChar m_specialChar;
	CPreviousPassword m_previousPassword;
	CSequence m_sequence;
	CDictionary m_dictionary;

public:
	GString GetDescription() const;
	void SetDescription( GString nDescription );
    const CLenght &GetLenght() const;
	void SetLenght(const CLenght &nLenght );
	const CUpperCase &GetUpperCase() const;
	void SetUpperCase(const CUpperCase &nUpperCase );
	const CLowerCase &GetLowerCase() const;
	void SetLowerCase(const CLowerCase &nLowerCase );
	const CNumeric &GetNumeric() const;
	void SetNumeric(const CNumeric &nNumeric );
	const CSpecialChar &GetSpecialChar() const;
	void SetSpecialChar(const CSpecialChar &nSpecialChar );
	const CPreviousPassword &GetPreviousPassword() const;
	void SetPreviousPassword(const CPreviousPassword &nPreviousPassword );
	const CSequence &GetSequence() const;
	void SetSequence(const CSequence &nSequence );
	const CDictionary &GetDictionary() const;
	void SetDictionary(const CDictionary &nDictionary );

public:
	virtual void MapXMLTagsToMembers();
	DECLARE_FACTORY(CPasswordPolicy , PasswordPolicy )
};